package com.icez.base_compose_framework.util

import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import androidx.core.content.ContextCompat.getSystemService

/**
 * 网络工具
 * 需要添加权限：<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 * @author icez
 */
object BNetworkUtil {
    /**
     * 网络是否可用
     * @param context 上下文
     */
    public fun isNetworkAvailable(context:Context): Boolean {
        //获取系统的ConnectivityManager服务
        val cm = getSystemService(context, ConnectivityManager::class.java)
        //初始化一个布尔变量isNetworkAvailable为true，表示默认网络可用
        var isNetworkAvailable = true
        //检查当前Android系统的API级别是否大于等于M（即6.0及以上版本）。
        //获取当前活动网络的能力信息。
        val capabilities = cm?.getNetworkCapabilities(cm.activeNetwork)
        //如果capabilities为空，则设置isNetworkAvailable为false；否则检查网络是否具有互联网访问能力和验证能力，两者都满足则认为网络可用。
        if (capabilities == null){
            isNetworkAvailable = false
        }else{
            isNetworkAvailable = capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
        }
        return isNetworkAvailable
    }
}